import pandas as pd
from xhtml2pdf import pisa
from jinja2 import Environment, FileSystemLoader

# 创建示例DataFrame
data = {
    'name': ['张三', '李四', '王五'],
    '年龄': [25, 30, 35],
    '成绩': [85, 90, 95]
}
df = pd.DataFrame(data)


def convert_html_to_pdf(source_html, output_filename):
    # 打开一个文件以写入 PDF 内容
    result_file = open(output_filename, "w+b")

    # 使用 pisa 创建 PDF
    pisa_status = pisa.CreatePDF(
        source_html,
        dest=result_file,
        encoding='utf-8')

    # 关闭文件
    result_file.close()

    # 返回是否成功的布尔值
    return pisa_status.err == 0


def df_to_pdf(df):
    # 配置Jinja2环境
    env = Environment(loader=FileSystemLoader('.'))
    template = env.get_template('./生成报告/report_template.html')

    # 准备数据以填充模板
    columns = df.columns.tolist()
    rows = df.values.tolist()

    # 渲染模板
    output = template.render(columns=columns, rows=rows)

    # 保存为HTML文件
    output_file_path = 'automated_report.html'
    with open(output_file_path, 'w', encoding='utf-8') as f:
        f.write(output)

    print(f"自动化报告已保存为 {output_file_path}")
  
    convert_html_to_pdf(output, 'automated_report.pdf')